class ArrayStack<T = any> {
  private data: T[] = [];

  // 栈操作
  // 1. 添加
  push(element: T): void {
    this.data.push(element);
  }
  // 2. 移除栈顶
  pop(): T | undefined {
    return this.data.pop();
  }
  // 3. 返回栈顶的元素
  peek(): T | undefined {
    return this.data[this.data.length - 1];
  }
  // 4. 如果栈里没有任何元素就返回true，否则返回 false。
  isEmpty(): boolean {
    return this.data.length === 0;
  }
  // 5. 返回栈里的元素个数。
  size(): number {
    return this.data.length;
  }
}

// 创建一个ArrayStack实例
const arrStack = new ArrayStack<string>();
arrStack.push('aaaaa');
arrStack.push('bbbbb');
arrStack.push('ccccc');
console.log(arrStack.peek()); //ccccc

console.log(arrStack.size()); //3

const arrStack1 = new ArrayStack<number>();
arrStack1.push(3);
arrStack1.push(7);
arrStack1.push(888);

console.log(arrStack1.size()); //3

const res = arrStack1.peek();
console.log(res); // 888

export {};
